﻿namespace Pospa.NET.WebPageTestApi.Interfaces
{
	public interface ITestRequest : IBaseTestRequest
	{
		/// <summary>
		///     Label for the test
		/// </summary>
		string Label { get; }

		/// <summary>
		///     Location to test from
		/// </summary>
		/// <value>
		///     Default value is "Dulles 1.5Mb DSL"
		/// </value>
		string Location { get; }

		/// <summary>
		///     Number of test runs (1-10 on the public instance)
		/// </summary>
		/// <value>
		///     Default value is 1
		/// </value>
		int? Runs { get; }

		/// <summary>
		///     First View Only
		/// </summary>
		/// <value>
		///     Set to true to skip the Repeat View test
		///     Default Value is false
		/// </value>
		bool FvOnly { get; }

		/// <summary>
		///     DOM Element to record for sub-measurement
		/// </summary>
		string Domelement { get; }

		/// <summary>
		///     Is test private
		/// </summary>
		/// <value>
		///     Set to true to keep the test hidden from the test log
		///     Default value is false
		/// </value>
		bool? Private { get; }

		/// <summary>
		///     Override the number of concurrent connections IE uses
		/// </summary>
		/// <value>
		///     0 to not override
		///     Default value is 0
		/// </value>
		int? Connections { get; }

		/// <summary>
		///     Force the test to stop at Document Complete (onLoad)
		/// </summary>
		/// <value>
		///     Set to true to force the test to stop at Document Complete (onLoad)
		///     Default value is false
		/// </value>
		bool Web10 { get; }

		/// <summary>
		///     Scripted test to execute
		/// </summary>
		string Script { get; }

		/// <summary>
		///     space-delimited list of urls to block (substring match)
		/// </summary>
		string Block { get; }

		/// <summary>
		///     User name to use for authenticated tests (http authentication)
		/// </summary>
		string Login { get; }

		/// <summary>
		///     Password to use for authenticated tests (http authentication)
		/// </summary>
		string Password { get; }

		/// <summary>
		///     Type of authentication to use
		/// </summary>
		/// <value>
		///     0 = Basic Auth, 1 = SNS
		///     Default value is 0
		/// </value>
		int AuthType { get; }

		/// <summary>
		///     Capture video
		/// </summary>
		/// <value>
		///     Set to 1 to capture video
		///     Default value is 0
		/// </value>
		bool Video { get; }

		/// <summary>
		///     Format. Set to "xml" to request an XML response instead of a redirect ("json" is also provisionally supported)
		/// </summary>
		/// <value>
		///     Set to "xml" to request an XML response instead of a redirect
		/// </value>
		string F { get; }

		/// <summary>
		///     When using the xml interface, will echo back in the response
		/// </summary>
		string R { get; }

		/// <summary>
		///     e-mail address to notify with the test results
		/// </summary>
		/// <value>e-mail</value>
		string Notify { get; }

		/// <summary>
		///     URL to ping when the test is complete (the test ID will be passed as an "id" parameter)
		/// </summary>
		string Pingback { get; }

		/// <summary>
		///     Download bandwidth in Kbps (used when specifying a custom connectivity profile)
		/// </summary>
		/// <value>
		///     Bandwidth in Kbps
		/// </value>
		int BwDown { get; }

		/// <summary>
		///     Upload bandwidth in Kbps (used when specifying a custom connectivity profile)
		/// </summary>
		/// <value>
		///     Bandwidth in Kbps
		/// </value>
		int BwUp { get; }

		/// <summary>
		///     First-hop Round Trip Time in ms (used when specifying a custom connectivity profile)
		/// </summary>
		/// <value>
		///     Round Trip Time in ms
		/// </value>
		int Latency { get; }

		/// <summary>
		///     Packet loss rate - percent of packets to drop (used when specifying a custom connectivity profile)
		/// </summary>
		/// <value>
		///     Percent of packets to drop
		/// </value>
		int Plr { get; }

		/// <summary>
		///     API Key (if assigned) - applies only to runtest.php calls. Contact the site owner for a key if required
		/// </summary>
		string K { get; }

		/// <summary>
		///     Set to true to enable tcpdump capture
		/// </summary>
		/// <value>
		///     Default value is false
		/// </value>
		bool Tcpdump { get; }

		/// <summary>
		///     Set to true to disable optimization checks (for faster testing)
		/// </summary>
		/// <value>
		///     Default value is false
		/// </value>
		bool Noopt { get; }

		/// <summary>
		///     Set to true to disable screen shot capturing
		/// </summary>
		/// <value>
		///     Default value is false
		/// </value>
		bool Noimages { get; }

		/// <summary>
		///     Set to true to disable saving of the http headers (as well as browser status messages and CPU utilization)
		/// </summary>
		/// <value>
		///     Default value is false
		/// </value>
		bool Noheaders { get; }

		/// <summary>
		///     Set to true to save a full-resolution version of the fully loaded screen shot as a png
		/// </summary>
		bool Pngss { get; }

		/// <summary>
		///     Specify a jpeg compression level (30-100) for the screen shots and video capture
		/// </summary>
		/// <value>
		///     Jpeg compression level (30-100)
		/// </value>
		int Iq { get; }

		/// <summary>
		///     Set to true to disable javascript (IE, Chrome, Firefox)
		/// </summary>
		bool Noscript { get; }
	}
}